Reporte

Autor/a

Gabriel Mendoza, Luis La Cruz, Sebastian Rodriguez

library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ forcats   1.0.0     ✔ readr     2.1.5
✔ ggplot2   3.5.1     ✔ stringr   1.5.1
✔ lubridate 1.9.4     ✔ tibble    3.2.1
✔ purrr     1.0.2     ✔ tidyr     1.3.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(tidyr)
tabla_produccion<-read_excel(path="Crude_oil_production_in_OPEC_and_Price_Average_Annual_DoC (2).xlsx", range = "A3:BM18")

tabla_canasta <- read_excel(path="cesta_opep.xlsx", range= "A3:AP15")

#formato largo canasta

# Transformar la tabla y renombrar columnas en español
tabla_canasta_long <- tabla_canasta %>%
  rename(paises = Contries) %>%  
  pivot_longer(
    cols = -paises,              
    names_to = "Ano",            
    values_to = "Tipo_Petroleo" )
    
  

###eliminamos las columnas innecesarias####
tabla_produccion_corregida<-tabla_produccion%>%
  select(-(2:21), -(63:65))

####transformamos de wide a longer donde damos###
###un nuevo nombre a las columnas y organizamos por year###
tabla_produccion_largo<-tabla_produccion_corregida%>%
  pivot_longer(
    cols =-Contries,
    names_to = "ano",
    values_to = "produccion_pais"
  )%>%
  rename(paises=Contries)%>%
  arrange(ano)


### en este caso vamos a filtrar unas filas, transformarlas a wide###
### donde tomaremos los tittulos de la columna "paises" y los valores###
### de la columna "produccion", luego con ! eliminaremos esas filas y vamos###
### a unir con nuestras nuevas columnas con left_join y lo haremos por orden de year###

filas_a_transformar1 <- tabla_produccion_corregida %>%
  filter(Contries %in% c("OPEC","Price OPEP","Price Average Annual"))


filas_transformada_long <- filas_a_transformar1 %>%
  pivot_longer(
    cols = -Contries, 
    names_to = "year",
    values_to = "value")

filas_long<-filas_transformada_long%>%
  pivot_wider(
    names_from = Contries,
    values_from = value
  )




# Transformar las filas usando pivot_wider
# Transformar la tabla a formato largo y crear la columna produccion_pais


produccion_final <- tabla_produccion_largo %>%
  filter(!paises %in% c("OPEC", "Price OPEP", "Price Average Annual")) %>%  
  left_join(filas_long, by = c("ano" = "year")) %>%
  rename(produccion_opep = OPEC)

# Renombrar las columnas
# Convertir las columnas a formato numérico
# Convertir las columnas a formato numérico
#Convertir las columnas a formato numérico

produccion_final <- produccion_final %>%
  mutate(
    ano = as.numeric(ano),
    `Price Average Annual` = round(as.numeric(`Price Average Annual`), 1)
  ) 



library(tidyverse)
library(ggplot2)




#Convertir la columna "ano" a tipo numérico
tabla_canasta_long <- tabla_canasta_long %>%
  mutate(Ano = as.numeric(Ano)) 


# Unir los dataframes "produccion_final" y "tabla_canasta_long" usando left_join
produccion_final_unida <- produccion_final %>%
  left_join(tabla_canasta_long, by = c("paises" = "paises", "ano" = "Ano"))

 ####se creo una columna de porcentaje en la tabla df produccion_final_unida
produccion_final_unida <- produccion_final_unida %>%
  mutate(porcentaje_produccion = (produccion_pais / produccion_opep) * 100,2)

produccion_final_unida <- produccion_final_unida %>%
  mutate(porcentaje_produccion = round((produccion_pais / produccion_opep) * 100, 2))
 

produccion_final_unida <- produccion_final_unida %>%
  select(-`2`)


# resumen estadistico 
produccion_final_unida %>%
  select(produccion_opep, `Price OPEP`, `Price Average Annual`)
# A tibble: 492 × 3
   produccion_opep `Price OPEP` `Price Average Annual`
             <dbl>        <dbl>                  <dbl>
 1          24685.         35.5                   36.8
 2          24685.         35.5                   36.8
 3          24685.         35.5                   36.8
 4          24685.         35.5                   36.8
 5          24685.         35.5                   36.8
 6          24685.         35.5                   36.8
 7          24685.         35.5                   36.8
 8          24685.         35.5                   36.8
 9          24685.         35.5                   36.8
10          24685.         35.5                   36.8
# ℹ 482 more rows
# Producción promedio por país ###reframe no sumarise ya lo dijo en diciembre 86
produccion_final_unida %>%
  group_by(paises) %>%
  reframe(
    produccion_promedio_paises = mean(produccion_pais)
  ) %>%
  arrange(desc(produccion_promedio_paises))
# A tibble: 12 × 2
   paises               produccion_promedio_paises
   <chr>                                     <dbl>
 1 Saudi Arabia                              7989.
 2 IR Iran                                   3180.
 3 Venezuela                                 2330.
 4 Iraq                                      2228.
 5 United Arab Emirates                      2151.
 6 Kuwait                                    1958.
 7 Nigeria                                   1788.
 8 Libya                                     1213.
 9 Algeria                                    941.
10 Gabon                                      239.
11 Congo                                      208.
12 Equatorial Guinea                          114.
#Precios promedios por año
precios_anuales <- produccion_final_unida %>%
  group_by(ano) %>%
  reframe(
    precio_opep = mean(`Price OPEP`, na.rm = TRUE),
    precio_global = mean(`Price Average Annual`, na.rm = TRUE)
  ) %>%
  ungroup() # Desagrupar después de la operación

A continuación desglosaremos el informe de la construcción del codigo en 2 partes.

Primera parte: Data Frame. (Importar, Ordenar, Transformar).

Segunda parte: (Mapa, Grafícos y Tablas).

En el primer paso con el comando ‘library()’ corrimos los paquetes ‘tidyverse’, ‘dplyr’, ‘readxl, ’tidyr’.

  1. dplyr: Con este codigo activamos las funciones para organizar las filas por columnas, selecionar las columnas, ordenar datos, agraparlos y crear nuevas variables.
  2. tidyverse: Es con conjunto de paquetes de R que integran otros como ‘ggplot2’ (para graficas datos) , ‘readr’ (para visualizar datos), ‘tidyr’ (para organizar datos).

Carga de Datos. (Importación)

library(dplyr)
library(tidyverse)
library(readxl)
library(tidyr)

# Importar datos de producción petrolera #
tabla_produccion<-read_excel(path="Crude_oil_production_in_OPEC_and_Price_Average_Annual_DoC (2).xlsx", range = "A3:BM18")

# Importar datos de tipos de petroleo por país #
tabla_canasta <- read_excel(path="cesta_opep.xlsx", range= "A3:AP15")

En esta primera parte importamos los datos desde el excell descargado de la pagina de la OPEP, donde teniamos la producción por pais de la OPEP y producción total de todos los países miembros. esta parte del codigo aplicamos ‘readxl’ para importar Excel, ‘range’ para definir celdas específicas.

Transformación inicial de Datos. (Ordenar)

# formato largo canasta #

# Transformar la tabla y renombrar columnas en español
tabla_canasta_long <- tabla_canasta %>%
  rename(paises = Contries) %>%  
  pivot_longer(
    cols = -paises,              
    names_to = "Ano",            
    values_to = "Tipo_Petroleo" )

Convertir datos de formato ancho (‘wide’) a largo (‘long’) usado ’tidyr: :pivot_longer() para poder trabajar y representar los datos en los graficos de manera correcta.

Limpieza y Reestructuración de Datos de Producción. (Transformar)

# Eliminamos las columnas innecesarias #
tabla_produccion_corregida<-tabla_produccion%>%
  select(-(2:21), -(63:65))

#Transformamos de wide a longer donde damos#
#Un nuevo nombre a las columnas y organizamos por year#
tabla_produccion_largo<-tabla_produccion_corregida%>%
  pivot_longer(
    cols =-Contries,
    names_to = "ano",
    values_to = "produccion_pais"
  )%>%
  rename(paises=Contries)%>%
  arrange(ano)

Ya con el formato en largo (‘long’) le dimos un nuevo nombre a las columnas y organizamos por años y dimos uso de ‘pivol_longer()’ para crear una columna ‘ano’ y ‘produccion_país’.

Procesamiento de Filas Específicas. (Transformar)

### En este caso vamos a filtrar unas filas, transformarlas a wide###
### donde tomaremos los titulos de la columna "paises" y los valores###
### de la columna "produccion", luego con ! eliminaremos esas filas y vamos###
### a unir con nuestras nuevas columnas con left_join y lo haremos por orden de year###

filas_a_transformar1 <- tabla_produccion_corregida %>%
  filter(Contries %in% c("OPEC","Price OPEP","Price Average Annual"))


filas_transformada_long <- filas_a_transformar1 %>%
  pivot_longer(
    cols = -Contries, 
    names_to = "year",
    values_to = "value")

filas_long<-filas_transformada_long%>%
  pivot_wider(
    names_from = Contries,
    values_from = value
  )

Hicimos el procesamiento de filas específicas, filas de precios y producción OPEP y nuevamente transformamos a largo y luego ancho teniendo como resultado. Dataframe filas_longcon columnas ‘year’, ‘OPEC’, ‘Price OPEP’, ‘Price Average Annual’.

Unión de las Datasets. (Transformar)

# Transformar las filas usando pivot_wider
# Transformar la tabla a formato largo y crear la columna produccion_pais


produccion_final <- tabla_produccion_largo %>%
  filter(!paises %in% c("OPEC", "Price OPEP", "Price Average Annual")) %>%  
  left_join(filas_long, by = c("ano" = "year")) %>%
  rename(produccion_opep = OPEC)

# Renombrar las columnas
# Convertir las columnas a formato numérico
# Convertir las columnas a formato numérico
#Convertir las columnas a formato numérico

produccion_final <- produccion_final %>%
  mutate(
    ano = as.numeric(ano),
    `Price Average Annual` = round(as.numeric(`Price Average Annual`), 1)
  ) 

Transformamos la tabla a formato largo y creamos la columna produccion_pais, la integramos usando left_join y aseguramos el formato numerico de las columnas con ’mutate().

Calculo de porcentaje. (Transformar)

#Convertir la columna "ano" a tipo numérico
tabla_canasta_long <- tabla_canasta_long %>%
  mutate(Ano = as.numeric(Ano)) 


# Unir los dataframes "produccion_final" y "tabla_canasta_long" usando left_join
produccion_final_unida <- produccion_final %>%
  left_join(tabla_canasta_long, by = c("paises" = "paises", "ano" = "Ano"))

 ####se creo una columna de porcentaje en la tabla df produccion_final_unida
produccion_final_unida <- produccion_final_unida %>%
  mutate(porcentaje_produccion = (produccion_pais / produccion_opep) * 100,2)

produccion_final_unida <- produccion_final_unida %>%
  mutate(porcentaje_produccion = round((produccion_pais / produccion_opep) * 100, 2))
 

produccion_final_unida <- produccion_final_unida %>%
  select(-`2`)

Terminamos de convertir la columna ‘ano’ a tipo numerico, unimos la data frame “producción_final” y “tabla_canasta_long” con left_join y por consiguiente creamos una columna de porcentaje en la tabla dataframe ‘produccion_final_unida. Aplicamos la formula de porcentaje en nuestro caso fue ’porcentaje_producción = (produccion_país / produccion_opep) y aplicamos ’round’ para redondear a 2 decimales.

Análisis Estadístico. (Transformar)

# resumen estadistico 
produccion_final_unida %>%
  select(produccion_opep, `Price OPEP`, `Price Average Annual`)
# A tibble: 492 × 3
   produccion_opep `Price OPEP` `Price Average Annual`
             <dbl>        <dbl>                  <dbl>
 1          24685.         35.5                   36.8
 2          24685.         35.5                   36.8
 3          24685.         35.5                   36.8
 4          24685.         35.5                   36.8
 5          24685.         35.5                   36.8
 6          24685.         35.5                   36.8
 7          24685.         35.5                   36.8
 8          24685.         35.5                   36.8
 9          24685.         35.5                   36.8
10          24685.         35.5                   36.8
# ℹ 482 more rows
# Producción promedio por país ###reframe no sumarise ya lo dijo en diciembre 86
produccion_final_unida %>%
  group_by(paises) %>%
  reframe(
    produccion_promedio_paises = mean(produccion_pais)
  ) %>%
  arrange(desc(produccion_promedio_paises))
# A tibble: 12 × 2
   paises               produccion_promedio_paises
   <chr>                                     <dbl>
 1 Saudi Arabia                              7989.
 2 IR Iran                                   3180.
 3 Venezuela                                 2330.
 4 Iraq                                      2228.
 5 United Arab Emirates                      2151.
 6 Kuwait                                    1958.
 7 Nigeria                                   1788.
 8 Libya                                     1213.
 9 Algeria                                    941.
10 Gabon                                      239.
11 Congo                                      208.
12 Equatorial Guinea                          114.
#Precios promedios por año
precios_anuales <- produccion_final_unida %>%
  group_by(ano) %>%
  reframe(
    precio_opep = mean(`Price OPEP`, na.rm = TRUE),
    precio_global = mean(`Price Average Annual`, na.rm = TRUE)
  ) %>%
  ungroup() # Desagrupar después de la operación

Aplicamos la funcion mean y group_by para sacar el promedio de producción agrupado por país y año.

Parte 2: Mapa, Gráficos y Tabla. (Visualización).

En esta parte de visualización de los datos usamos como paquete principal ‘ggplot’ para el desarrollo de los gráficos, permitiendo crear visualizaciones complejas y personalizadas para reflejar los datos de nuestra dataframe.

##Tendencia de precios

ggplot(produccion_final_unida, aes(x = ano)) +
  # Puntos para Precio OPEP
  geom_point(aes(y = `Price OPEP`, color = "Precio OPEP")) +
  # Puntos para Precio Global
  geom_point(aes(y = `Price Average Annual`, color = "Precio Global")) +
  # Línea de tendencia para Precio OPEP
  geom_smooth(aes(y = `Price OPEP`, color = "Precio OPEP"), method = "loess", se = FALSE) +
  # Línea de tendencia para Precio Global
  geom_smooth(aes(y = `Price Average Annual`, color = "Precio Global"), method = "loess", se = FALSE) +
  # Etiquetas y título del gráfico
  labs(
    title = "Tendencias de precios petroleros (1980-2020)",
    x = "Año",
    y = "Precio (USD)",
    color = "Tipo de precio"
  ) +
  # Tema minimalista
  theme_minimal() +
  # Colores personalizados para las series de datos
  scale_color_manual(values = c("Precio OPEP" = "red", "Precio Global" = "blue")) +
  # Posición de la leyenda
  theme(legend.position = "bottom") 
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ x'

#Producción por país (series temporales)
# Crear el gráfico
ggplot(produccion_final, aes(x = ano, y = produccion_pais, color = paises)) +
  geom_line(linewidth = 1) +
  labs(
    title = "Producción petrolera por país (1980-2020)",
    x = "Año",
    y = "Producción (1,000 b/d)",
    color = "País"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

# Comparación de Producción Anual por País
produccion_final %>%
 # filter(year == 2020) %>%
  ggplot(aes(x = reorder(paises, produccion_pais), y = produccion_pais, fill = paises)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Comparación de producción petrolera por país en 2020",
    x = "País",
    y = "Producción (1,000 b/d)"
  ) +
  theme_minimal() +
  theme(legend.position = "none") +
  facet_wrap(~ano)

# Promedio de Producción por Década 

produccion_final %>%
  mutate(decade = floor(ano / 10) * 10) %>%
  group_by(decade, paises) %>%
  reframe(mean_produccion_pais = mean(produccion_pais, na.rm = TRUE)) %>%
  ggplot(aes(x = factor(decade), y = mean_produccion_pais, fill = paises)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(
    title = "Promedio de producción petrolera por década (1980-2020)",
    x = "Década",
    y = "Producción Promedio (1,000 b/d)",
    fill = "País"
  ) +
  theme_minimal()

library(leaflet)

# Crear un dataframe con los países y sus coordenadas
paises_location <- data.frame(
  countries = c("Algeria", "Congo", "Equatorial Guinea", "Gabon", "IR Iran", "Iraq", 
                "Kuwait", "Libya", "Nigeria", "Saudi Arabia", "United Arab Emirates", "Venezuela"),
  lat = c(28.0339, -0.2280, 1.6508, -0.8037, 32.4279, 33.2232, 29.3759, 26.3351, 9.0820, 23.8859, 23.4241, 6.4238),
  lng = c(1.6596, 15.8277, 10.2679, 11.6094, 53.6880, 43.6793, 47.9774, 17.2283, 8.6753, 45.0792, 53.8478, -66.5897),
  produccion_pais=produccion_final$produccion_pais
)

mapa_interactivo <- leaflet(paises_location) %>%
  addTiles() %>%  # Agregar capa base de OpenStreetMap
  addCircleMarkers(
    lng = ~lng, lat = ~lat,  # Coordenadas de los países
    popup = ~countries,           # Mostrar el nombre del país al hacer clic
    label = ~countries,
    color = "yellow",                   # Color del borde del círculo                # Color de relleno del círculo
    fillOpacity = 0.8  # Mostrar el nombre del país al pasar el cursor
  )

# Mostrar el mapa
mapa_interactivo
#############
library(DT)

# Primera tabla: Producción Anual por País
tabla1 <- datatable(
  produccion_final_unida %>% select(paises, ano, produccion_pais, porcentaje_produccion, Tipo_Petroleo, produccion_opep),
  options = list(
    pageLength = 10,
    dom = 'Bfrtip', # Agrega botones y filtros
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    autoWidth = TRUE,
    scrollX = TRUE,
    scrollY = "400px"
  ),
  filter = 'top',
  caption = 'Producción Anual por País'
)

# Mostrar la tabla
tabla1
######################
# Segunda tabla: Precio Anual OPEP (Eliminando duplicados por año)

tabla2.21 <- datatable(
  produccion_final %>%
    select(ano, `Price OPEP`, `Price Average Annual`) %>%
    distinct(ano, `Price OPEP`, `Price Average Annual`), # Esto se asegura que por año solo haya un registro único
  extensions = c('Buttons'),
  options = list(
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    pageLength = 10
  ),
  caption = 'Precio Anual OPEP'
)

# Mostrar la tabla
tabla2.21
###############
#Graficos lineales###

library(ggplot2)
library(patchwork)

# Gráfico 1: Producción OPEP
grafico_produccion <- ggplot(produccion_final_unida, aes(x = ano, y = produccion_opep)) +
  geom_line(color = "blue", linewidth = 1) +
  labs(title = "Producción Anual de la OPEP", x = "Año", y = "Producción (Millones de barriles diarios)") +
  theme_minimal()

# Gráfico 2: Precio Internacional
grafico_precio <- ggplot(produccion_final_unida, aes(x = ano, y = `Price Average Annual`)) +
  geom_line(color = "red", size = 1) +
  labs(title = "Precio Internacional del Petróleo (Promedio Anual)", x = "Año", y = "Precio (USD por barril)") +
  theme_minimal()
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
# Enlazar ambos gráficos (Stacked)
grafico_final <- grafico_produccion / grafico_precio

# Mostrar gráficos
grafico_final

Gráfico de tendencias de precios.

##Tendencia de precios

ggplot(produccion_final_unida, aes(x = ano)) +
  # Puntos para Precio OPEP
  geom_point(aes(y = `Price OPEP`, color = "Precio OPEP")) +
  # Puntos para Precio Global
  geom_point(aes(y = `Price Average Annual`, color = "Precio Global")) +
  # Línea de tendencia para Precio OPEP
  geom_smooth(aes(y = `Price OPEP`, color = "Precio OPEP"), method = "loess", se = FALSE) +
  # Línea de tendencia para Precio Global
  geom_smooth(aes(y = `Price Average Annual`, color = "Precio Global"), method = "loess", se = FALSE) +
  # Etiquetas y título del gráfico
  labs(
    title = "Tendencias de precios petroleros (1980-2020)",
    x = "Año",
    y = "Precio (USD)",
    color = "Tipo de precio"
  ) +
  # Tema minimalista
  theme_minimal() +
  # Colores personalizados para las series de datos
  scale_color_manual(values = c("Precio OPEP" = "red", "Precio Global" = "blue")) +
  # Posición de la leyenda
  theme(legend.position = "bottom") 
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ x'

El objetivo es visualizar y comparar los precios de la OPEP y el promedio global.

Aplicamos ‘geom_point’ para mostrar los precios anuales como los puntos, ’geom_smooth” para añadir líneas de tendencia suaviazadas,

(‘method = ’loes’’), ’scale_color_manual para asignarle colores especifícos a cada serie.

Gráfico de series temporales por país.

#Producción por país (series temporales)
# Crear el gráfico
ggplot(produccion_final, aes(x = ano, y = produccion_pais, color = paises)) +
  geom_line(linewidth = 1) +
  labs(
    title = "Producción petrolera por país (1980-2020)",
    x = "Año",
    y = "Producción (1,000 b/d)",
    color = "País"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

Objetivo: Visualizar la producción petrolera de cada país a lo largo del tiempo.

Aplicamos las funciones de ‘color = paises’ para asignar colores distintos a cada unos de los países automaticamente.

‘theme(legend.position = ’bottom’)’ para colocarle la leyenda debajo del gráfico para mejor legibilidad.

Gráfico de comparación de producción por País (2020)

# Comparación de Producción Anual por País
produccion_final %>%
 # filter(year == 2020) %>%
  ggplot(aes(x = reorder(paises, produccion_pais), y = produccion_pais, fill = paises)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Comparación de producción petrolera por país en 2020",
    x = "País",
    y = "Producción (1,000 b/d)"
  ) +
  theme_minimal() +
  theme(legend.position = "none") +
  facet_wrap(~ano)

Objetivo: Comparar la producción entre países en un año específico usando barras horizonlates.

Aplicamos ‘reorder (paises, produccion_pais)’ para ordenar los países por producción ascendente.

‘coord_flip’ para convertir las barras en horizontales.

’face_wrap(~ano) para crear subgráficos por año.

Gráfico de promedio de producción por décadas.

# Promedio de Producción por Década 

produccion_final %>%
  mutate(decade = floor(ano / 10) * 10) %>%
  group_by(decade, paises) %>%
  reframe(mean_produccion_pais = mean(produccion_pais, na.rm = TRUE)) %>%
  ggplot(aes(x = factor(decade), y = mean_produccion_pais, fill = paises)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(
    title = "Promedio de producción petrolera por década (1980-2020)",
    x = "Década",
    y = "Producción Promedio (1,000 b/d)",
    fill = "País"
  ) +
  theme_minimal()

Objetivo: Visualizar la producción por décadas usando barras.

Aplicamos ‘x = factor(decade)’ para tratar la década como una categoría.

‘position = “dodge”’ Colocamos las barras laado a lado para compararlas.

‘fill = paises’. para asignar los colores.

‘star = “identity”’ para usar los valores directos de ‘y’

Mapa Interactivo.

library(leaflet)

# Crear un dataframe con los países y sus coordenadas
paises_location <- data.frame(
  countries = c("Algeria", "Congo", "Equatorial Guinea", "Gabon", "IR Iran", "Iraq", 
                "Kuwait", "Libya", "Nigeria", "Saudi Arabia", "United Arab Emirates", "Venezuela"),
  lat = c(28.0339, -0.2280, 1.6508, -0.8037, 32.4279, 33.2232, 29.3759, 26.3351, 9.0820, 23.8859, 23.4241, 6.4238),
  lng = c(1.6596, 15.8277, 10.2679, 11.6094, 53.6880, 43.6793, 47.9774, 17.2283, 8.6753, 45.0792, 53.8478, -66.5897),
  produccion_pais=produccion_final$produccion_pais
)

mapa_interactivo <- leaflet(paises_location) %>%
  addTiles() %>%  # Agregar capa base de OpenStreetMap
  addCircleMarkers(
    lng = ~lng, lat = ~lat,  # Coordenadas de los países
    popup = ~countries,           # Mostrar el nombre del país al hacer clic
    label = ~countries,
    color = "yellow",                   # Color del borde del círculo                # Color de relleno del círculo
    fillOpacity = 0.8  # Mostrar el nombre del país al pasar el cursor
  )

# Mostrar el mapa
mapa_interactivo

Objetivo: Resaltar los países miembros de la OPEP en el mapamundi.

Aplicamos el uso del paquete ‘leaflet’ para crear el mapa interactivo y permitir visualizar datos espaciales, y los marcadoles.

‘addTiles’ para añadir un mapa base.

‘addCirccleMarkers’ con este añadimos marcadoles circulares en coordenadas especificas.

‘popup’ y ‘label’ para mostrar la información (nombre de los países) al interactuar con los marcadoles.

Tabla Interactiva 1.

library(DT)

# Primera tabla: Producción Anual por País
tabla1 <- datatable(
  produccion_final_unida %>% select(paises, ano, produccion_pais, porcentaje_produccion, Tipo_Petroleo, produccion_opep),
  options = list(
    pageLength = 10,
    dom = 'Bfrtip', # Agrega botones y filtros
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    autoWidth = TRUE,
    scrollX = TRUE,
    scrollY = "400px"
  ),
  filter = 'top',
  caption = 'Producción Anual por País'
)

# Mostrar la tabla
tabla1

Objetivo: Expresar los datos de producción anual por país, porcentaje de producción por país, producción por opep y tipo de petroleo.

Usamos el paquete DT para crear tables HTML interactivas con funciones de búsqueda, ordenamiento y exportación.

‘datatable’ para convertir la dataframe en una tabla interactiva.

‘scrollX’ y scrollY’ para desplazarnos horizontal y verticalmente en la tabla.

Tabla 2.21

# Segunda tabla: Precio Anual OPEP (Eliminando duplicados por año)

tabla2.21 <- datatable(
  produccion_final %>%
    select(ano, `Price OPEP`, `Price Average Annual`) %>%
    distinct(ano, `Price OPEP`, `Price Average Annual`), # Esto se asegura que por año solo haya un registro único
  extensions = c('Buttons'),
  options = list(
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    pageLength = 10
  ),
  caption = 'Precio Anual OPEP'
)

# Mostrar la tabla
tabla2.21

Objetivo: Expresar los datos recopilados de los precios promedios anuales de la opep e internacionales.

‘datatable’ para convertir la dataframe en una tabla interactiva.

‘distinct’ para eliminar los duplicados de los precios y así poder mostrar un solo año.

Gráficos Lineales Combinados.

#Graficos lineales###

library(ggplot2)
library(patchwork)

# Gráfico 1: Producción OPEP
grafico_produccion <- ggplot(produccion_final_unida, aes(x = ano, y = produccion_opep)) +
  geom_line(color = "blue", linewidth = 1) +
  labs(title = "Producción Anual de la OPEP", x = "Año", y = "Producción (Millones de barriles diarios)") +
  theme_minimal()

# Gráfico 2: Precio Internacional
grafico_precio <- ggplot(produccion_final_unida, aes(x = ano, y = `Price Average Annual`)) +
  geom_line(color = "red", size = 1) +
  labs(title = "Precio Internacional del Petróleo (Promedio Anual)", x = "Año", y = "Precio (USD por barril)") +
  theme_minimal()

# Enlazar ambos gráficos (Stacked)
grafico_final <- grafico_produccion / grafico_precio

# Mostrar gráficos
grafico_final

Objetivo: Relacionar produccion de la OPEP y los precios internacionales.

Para hacer Packet usamos. ‘patchwork’ para enlazar los graficos.

Le colocamos los colores a las gráficas con ‘geom_line’.